import cv2
import numpy as np
import os

# 创建LBPH人脸识别器
RECOGNIZER = cv2.face.LBPHFaceRecognizer_create()
PASS_CONF = 45     # LBPH的最高评分
# 加载级联分类器
faceCascade = cv2.CascadeClassifier("F://01-learn//01-program//enviroment//venv//Lib//site-packages"
                                    "//cv2//data//haarcascade_frontalface_default.xml")

# 训练识别器
def train(photos, labels):
    RECOGNIZER.train(photos, np.array(labels))

# 检测面部
def found_face(gary):
    faces = faceCascade.detectMultiScale(gary, 1.15)
    if len(faces) > 0:
        return True
    else:
        return False

# 识别器识别图像中的人脸
def recognize_face(photo):
    label, confidence = RECOGNIZER.predict(photo)
    if confidence < 95:
        return label

# 加载员工图像
def load_employee_pic():
    photos = list()  # 样本图像列表
    lables = list()  # 标签列表
    PATH = os.getcwd()
    pics = os.listdir(PATH+str("\\photos"))  # 读取所有照片
    if len(pics) != 0:  # 如果照片文件不是空的
        for file_name in pics:  # 遍历所有图像文件
            code = file_name[0:1]  # 截取文件名开头的特征码
            photos.append(cv2.imread(PATH + "\\" +"photos" + "\\" + file_name, 0))  # 以灰度图像的方式读取样本
            lables.append(int(code))  # 样本的特征码作为训练标签
        train(photos, lables)  # 识别器训练样本
    else:  # 不存在任何照片
        print("Error >> 员工照片文件丢失，请重新启动程序并录入员工信息！")





